package com.example;

/**
 * @desc:
 * @author: Shoko
 * @date: 2025/6/13
 */
// 5. 后向迭代器（从数组尾部 -> 头部遍历）
public class BackwardIterator implements Iterator {
    private int index;
    private final ProductAggregate aggregate;

    public BackwardIterator(ProductAggregate aggregate) {
        this.aggregate = aggregate;
        this.first(); // 初始化时定位到最后一个元素
    }

    @Override
    public void currentItem() {
        String product = aggregate.getProduct(index);
        System.out.println("当前商品（反向）：" + product);
    }

    @Override
    public void first() {
        // 后向遍历从数组最后一个下标开始
        index = aggregate.getCount() - 1;
    }

    @Override
    public boolean isDone() {
        return index < 0;
    }

    @Override
    public void next() {
        if (index < aggregate.getCount() - 1) {
            index++; // 后向遍历的“next”是向数组尾部移动（逻辑与前向相反）
        }
    }

    @Override
    public void prev() {
        if (!isDone()) {
            index--; // 后向遍历的“prev”是向数组头部移动
        }
    }
}
